package com.york.tinyrpc.protoss.registry;

import com.york.tinyrpc.protoss.model.ServiceMetaInfo;

import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 将消费方从注册中心中获取的服务列表缓存下来
 */
public class FetchedServiceFromRegistryCenter {


    /**
     * 核心数据结构，存储多个服务信息,服务缓存
     */
    private Map<String, List<ServiceMetaInfo>> fetchedServiceCache = new ConcurrentHashMap<>();

    /**
     * 写缓存
     *
     * @param serviceKey      服务键名
     * @param newServiceCache 更新后的缓存列表
     */
    public void saveTargetServiceToCache(String serviceKey, List<ServiceMetaInfo> newServiceCache) {
        this.fetchedServiceCache.put(serviceKey, newServiceCache);
    }

    /**
     * 读缓存
     *
     * @param serviceKey
     * @return 目标服务的缓存服务信息
     */
    public List<ServiceMetaInfo> readTargetCache(String serviceKey) {
        return this.fetchedServiceCache.get(serviceKey);
    }

    /**
     * 清空目标服务的服务列表缓存
     */
    public void clearTargetCache(String serviceKey) {
        this.fetchedServiceCache.remove(serviceKey);
    }

    /**
     * 清空整个服务列表缓存
     */
    public void clearAllCache() {
        this.fetchedServiceCache.clear();
    }
}
